// 导入 express 模块
const express = require('express')
// 创建 express 的服务器实例

const WebSocket = require('ws');
const http = require('http');

const app = express();
const server = http.createServer(app);
const wss = new WebSocket.Server({ server });
let onNewOrder;

wss.on('connection', function connection(ws) {
  // 当有新订单时，推送消息到所有连接的客户端
  const notifyClients = (orderData) => {
    wss.clients.forEach(function each(client) {
      if (client.readyState === WebSocket.OPEN) {
        client.send(JSON.stringify(orderData));
      }
    });
  };

  // 假设这是订单更新的事件处理函数
   onNewOrder = (order) => {
    notifyClients({ type: 'NEW_ORDER', data: order });
  };

  ws.on('message', function incoming(message) {
    // 可以在这里处理来自前端的消息
    console.log('received: %s', message);
  });
  console.log(123);
});



// 实时通讯
app.use(function (req, res, next) {
  // status = 0 为成功； status = 1 为失败； 默认将 status 的值设置为 1，方便处理失败的情况
  res.newOrder = function (value) {
    // console.log(value+'666');
  onNewOrder(value);
   
  }
  next()
})



 // 导入 cors 中间件
const cors = require('cors')
const fileUpload = require('express-fileupload');

// 响应数据的中间件
app.use(function (req, res, next) {
    // status = 0 为成功； status = 1 为失败； 默认将 status 的值设置为 1，方便处理失败的情况
    res.cc = function (err, status = 1) {
      res.send({
        // 状态
        status,
        // 状态描述，判断 err 是 错误对象 还是 字符串
        message: err instanceof Error ? err.message : err,
      })
    }
    next()
  })
// 将 cors 注册为全局中间件
app.use(cors())
app.use(fileUpload());

var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// write your code here...
 // 导入并注册用户路由模块
const userRouter = require('./router/user')
app.use('/api', userRouter)
// 分类模块
const commonityRouter = require('./router/commonity')
app.use('/api', commonityRouter)
// 标签模块
const SortManagement = require('./router/SortManagement')
app.use('/tag',SortManagement )
// 商品支付成功
const pays = require('./router/pay')
app.use('/pay',pays )
// 优惠卷
const preferential = require('./router/preferential')
app.use('/preferential',preferential )
// 图片上传
const imageUpload = require('./router/upload')
app.use('/image',imageUpload )
// 调用 app.listen 方法，指定端口号并启动web服务器
server.listen(2023, function () {
  console.log('api server running at http://127.0.0.1:2023')
})